Skip to content

Conversation

@tex3d
Copy link
Contributor

@tex3d tex3d commented Jun 3, 2025

There were multiple issues with Unicode conversion on *nix platforms. This PR fixes issues I found with the conversion functions that were causing failures when running locally, due to issues with setting the locale. It also had incorrect behavior for emulating the MultiByteToWideChar API.

This change makes the local setting thread safe and more robust to different available locales in runtime environments.

I fixed some off-by-one issues related to null termination, and eliminated some extra copies caused by detecting a string length, then passing the size without the null-terminator to a function which then had to copy the input string again to guarantee null-termination.

The CompilerTest::CompileWithEncodeFlagTestSource test has minor updates for clarity and an added scenario.

The changed code passes the Unicode tests now without asserting across all platforms.
This change should have no functional impacts, except eliminating potential double-null-termination in some cases, and catching more error conditions.

Copy link
Collaborator

@llvm-beanz llvm-beanz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a more robust solution to the problem #7458 is trying to address.

@tex3d can you confirm?

@tex3d
Copy link
Contributor Author

tex3d commented Jul 11, 2025

I think this is a more robust solution to the problem #7458 is trying to address.

@tex3d can you confirm?

Yeah, this one fixes a number of other (potential) issues too.

@igaryhe
Copy link

igaryhe commented Oct 11, 2025

Hello, I've tested this PR and it indeed fixes several test failure for me. However, I cannot get any output by running dxc -help or dxc --version. What could be wrong?

@tex3d tex3d linked an issue Nov 25, 2025 that may be closed by this pull request
@tex3d tex3d enabled auto-merge (squash) November 25, 2025 20:49
@tex3d tex3d merged commit 9bcce40 into microsoft:main Nov 25, 2025
12 checks passed
@github-project-automation github-project-automation bot moved this from New to Done in HLSL Roadmap Nov 25, 2025
@tex3d tex3d deleted the unicode-fixes branch November 25, 2025 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

MultiByteToWideChar implementation is not threadsafe

4 participants